package com.yuan.gather.model;

import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Getter;
import lombok.Setter;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlValue;
import java.io.Serializable;

/**
 * 采集项配置命令实体
 *
 * @author zhaoff
 */
@Getter
@Setter
@XmlAccessorType(XmlAccessType.FIELD)
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class GatherDetailCommand implements Cloneable, Serializable {

    private static final long serialVersionUID = -5351779993878866338L;

    /**
     * 父进程号
     */
    @XmlAttribute(name = "pattern")
    private String ptn;

    /**
     * 进程号
     */
    @XmlAttribute
    private String id;

    /**
     * 父进程号
     */
    @XmlAttribute
    private String pid;

    /**
     * 命令是否是否是其它命令的基础命令，存在的话不进行单独的发送
     */
    @XmlAttribute
    private String addation;

    /**
     * 逻辑分支判断表达式
     */
    @XmlAttribute(name = "if")
    private String ifParam;

    /**
     * 输出变量名称
     */
    @XmlAttribute
    private String output;

    /**
     * 命令执行等待时间
     */
    @XmlAttribute(name = "wait")
    private Integer lot;

    /**
     * 是否是groovy命令 用来区分irf命令组
     */
    @XmlAttribute(name = "groovy")
    private boolean groovy;

    /**
     * 命令
     */
    @XmlValue
    private String command;

    /**
     * 查询历史数据的 间隔时间 单位 日 例如 1 代表查询此时此刻 往前推一天24小时的最新数据
     */
    @XmlAttribute(name = "period")
    private Integer period;

    /**
     * 历史数据 变量名称
     */
    @XmlAttribute(name = "history_output")
    private String historyOutput;

    /**
     * 查询历史数据的时候 标识是否 查询时间范围内的所有数据， start=true查询period日期到当前的所有数据
     */
    @XmlAttribute(name = "start")
    private boolean start;

    @Override
    public GatherDetailCommand clone() throws CloneNotSupportedException {
        return (GatherDetailCommand) super.clone();
    }

}
